#ifndef __UDSF_APP_INIT_C__
#define __UDSF_APP_INIT_C__

#include "app.h"

/*
*   notice:
*   UDSF 同UDF编程：不可调用cstd-lib,只可调用"sdk_ifs_udk_cfg.h"、"sys_api.h"中列出的API函数。
*   UDSF文件内函数均需使用static修饰符，且UDF中以#include "udsf_xxx.c"形式引用
*/

#include "udsf_spiflash.c"
#include "udsf_crc.c"

#include "udsf_uart.c"
#include "udsf_memory_access.c"
#include "udsf_app_cfg.c"

static int udsf_app_init_without_cfg(void) __attribute__((unused));
static int udsf_app_init(sys_cfg_t *p_sys_cfg) __attribute__((unused));

static int udsf_app_init(sys_cfg_t *p_sys_cfg)
{
	paramRT->ab_cfg_flag = p_rom_gb->cfg_place;
	paramRT->ab_app_flag = p_rom_gb->app_place;
	paramRT->sn          = p_rom_gb->app_ab_sn;

	if( paramRT->ab_cfg_flag > CFG_PLACE_USR_NONE ){ // 有配置区
		if( p_sys_cfg ){
			udsf_udc_syscfg_load(p_rom_gb->boot_flag,paramRT->ab_cfg_flag-1,(uint8_t*)p_sys_cfg,sizeof(sys_cfg_t));
			if( p_sys_cfg->app_cfg_inner ){
				paramRT->ab_cfg_flag = CFG_PLACE_USR_NONE;
			}
		}
		if( paramRT->ab_cfg_flag > CFG_PLACE_USR_NONE ){
			udsf_cfg_load(p_rom_gb->boot_flag,paramRT->ab_cfg_flag-1,(uint8_t*)paramCFG,sizeof(PARAM_CFG));
		}
	}

	if( !paramFunc->use_uart && p_rom_gb->debug_en ){
			udsf_uart_deinit();
			*p_rom_printen = 0; // 关闭print 函数开关
	}

	//*p_rom_anychar_reset_dis = 1;
	
	return 0;
}

static int udsf_app_init_without_cfg(void)
{
	paramRT->ab_cfg_flag = CFG_PLACE_USR_NONE;//p_rom_gb->cfg_place;
	paramRT->ab_app_flag = p_rom_gb->app_place;
	paramRT->sn          = p_rom_gb->app_ab_sn;

	if( !paramFunc->use_uart && p_rom_gb->debug_en ){
			udsf_uart_deinit();
			*p_rom_printen = 0; // 关闭print 函数开关
	}
	//*p_rom_anychar_reset_dis = 1;
	
	return 0;
}
#endif

